package com.jijuxie.agent.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.jijuxie.agent.domain.Agent;
import com.jijuxie.agent.domain.Customer;
import com.jijuxie.agent.domain.DealRecord;
import com.jijuxie.agent.domain.vo.AgentStatsVO;
import com.jijuxie.common.core.R;

public interface IAgentService extends IService<Agent> {

    /**
     * 经纪人认证
     */
    void certify(Agent agent);

    /**
     * 审核认证
     */
    void audit(Long agentId, String status, String remark);

    /**
     * 获取经纪人详情
     */
    Agent getAgentInfo(Long agentId);

    /**
     * 修改经纪人信息
     */
    void updateAgent(Agent agent);

    /**
     * 获取我的经纪人信息
     */
    Agent getMyAgentInfo();

    /**
     * 分页查询经纪人列表
     */
    Page<Agent> selectAgentPage(Page<Agent> page, Agent agent);

    /**
     * 获取经纪人业绩统计
     */
    AgentStatsVO getAgentStats(Long agentId);

    /**
     * 获取我的业绩统计
     */
    AgentStatsVO getMyStats();

    /**
     * 添加客户
     */
    void addCustomer(Customer customer);

    /**
     * 更新客户信息
     */
    void updateCustomer(Customer customer);

    /**
     * 获取客户列表
     */
    Page<Customer> selectCustomerPage(Page<Customer> page, Customer customer);

    /**
     * 添加成交记录
     */
    void addDealRecord(DealRecord record);

    /**
     * 确认成交
     */
    void confirmDeal(Long recordId);

    /**
     * 获取成交记录列表
     */
    Page<DealRecord> selectDealRecordPage(Page<DealRecord> page, DealRecord record);

    /**
     * 获取经纪人列表
     */
    R<Object> getAgentList(String keyword, Integer pageNum, Integer pageSize);

    /**
     * 申请成为经纪人
     */
    R<Object> applyAgent(Agent agentInfo);

    /**
     * 更新经纪人信息
     */
    R<Object> updateAgentInfo(Agent agentInfo);
}
